/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bdsi.practica2;


import org.xmldb.api.*;
import org.xmldb.api.base.*;
import org.xmldb.api.modules.*;
import java.io.*;
import bdsi.io.*;

public class BDSIPractica2 {
    
    public static void main(String args[]) throws Exception {
        String collection = args[0], file = args[1];
        //Eliminar “/db” si es especificado en la entrada
        if (collection.startsWith("/db")) {
            collection = collection.substring(3);
        }
        // Se inicializa el driver
        String driver = "org.exist.xmldb.DatabaseImpl";
        Class cl = Class.forName(driver);
        Database database = (Database) cl.newInstance();
        database.setProperty("create-database", "true");
        DatabaseManager.registerDatabase(database);
        // Se intenta acceder a la colección específicada como primer argumento
        Collection col = DatabaseManager.getCollection("xmldb:exist://localhost:8080/exist/xmlrpc/db" +
                                                        collection, "admin", "XMLFdILABs");
        if (col == null) {
            // Si la colección especificada como primer argumento no existe, entonces se crea
            Collection root =
            DatabaseManager.getCollection("xmldb:exist://localhost:8080/exist/xmlrpc/db",
                                            "admin", "XMLFdILABs");
            CollectionManagementService mgtService = (CollectionManagementService)
            root.getService("CollectionManagementService", "1.0");
            col = mgtService.createCollection(collection);
        }
        // Se crea un recurso XML para almacenar el documento
        XMLResource document = (XMLResource) col.createResource(null, "XMLResource");
        File f = new File(file);
        if (!f.canRead()) {
            System.err.println("No es posible leer el archivo " + file);
        }
        //System.out.println(f.toString());
        document.setContent(f);
        //System.out.println("Almacenando el archivo " + document.getId() + "...");
        col.storeResource(document);
        //System.out.println("Almacenado correctamente");
        
        String[] consultas = LeeFichero.leer(args[2],document.getId());
        
        XPathQueryService service =(XPathQueryService)col.getService("XPathQueryService", "1.0");
        service.setProperty("pretty", "true");
        service.setProperty("encoding", "ISO-8859-1");
         
        EscribeFichero.escribir("Resultados.txt", service, consultas);
    }
}